home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_02_07 / 2n07048a < prev    next >
Text File  |  1991-04-08  |  3KB  |  140 lines

  1.  
  2.     PAGE  57,130
  3.     TITLE ^Break and ^C and Prtscn
  4.     NAME  BREAK
  5.  
  6. ; ========================================================================
  7. ;  DESC:        These routines disable and enable the special
  8. ;               interrupt keyboard buttons.
  9. ;
  10. ;  INTERRUPTS:  0x23  ^C
  11. ;               0xlB  ^Break
  12. ;               0x05  Prtscn
  13. ;
  14. ;  REVISIONS:   JT Jewell   91/01/28.
  15. ;
  16. ;  COMPILER:    Microsoft Assembler  Ver 5.10A
  17. ;
  18. ;  COMPILE:     masm break.asm,break.obj;
  19. ;
  20. ;  ROUTINES:    To call the routines from C:
  21. ;               DISABLE BREAK();
  22. ;               ENABLE_BREAK(),
  23. ; ========================================================================
  24.  
  25.  
  26. _TEXT SEGMENT  PUBLIC  'CODE'
  27.   ASSUME   CS:_TEXT
  28.   ASSUME   DS:_TEXT
  29.  
  30.   PUBLIC   _DISABLE_BREAK
  31.  
  32.  
  33. ; ******************************************
  34.  
  35. _DISABLE_BREAK PROC NEAR
  36.  
  37.   PUSH BP
  38.   MOV  BP,SP
  39.  
  40.   PUSH DS
  41.   PUSH DI
  42.   PUSH SI
  43.   PUSH ES
  44.  
  45.   MOV AX, 3523H             ; SAVE ORIGINAL 0x23 Handle.
  46.   INT 21H
  47.   MOV  word ptr cs:ORG_INT23,bx
  48.   MOV  word ptr cs:ORG_INT23+2,es
  49.  
  50.   MOV  AX, 351BH            ; SAVE ORIGINAL 0xlB Handle.
  51.   INT  21H
  52.   MOV  word ptr cs:ORG_INT1B,bx
  53.   MOV  word ptr cs:ORG_INT1B+2,es
  54.  
  55.   MOV  AX, 3505H            ; SAVE ORIGINAL 0x05 Handle.
  56.   INT  21H
  57.   MOV  word ptr cs:ORG_INT05,bx
  58.   MOV  word ptr cs:ORG_INT05+2,es
  59.  
  60.   MOV  dx,seg _TEXT:NULL_BREAK
  61.   MOV  ds,dx
  62.  
  63.   MOV  dx,offset  _TEXT:NULL_BREAK
  64.  
  65.   MOV  ax,2523H            ; SET INT 23H VECTOR
  66.   INT  21H
  67.  
  68.   MOV  ax,251BH            ; SET INT lBH VECTOR
  69.   INT  21H
  70.  
  71.   MOV  ax,2505H            ; SET INT 05H VECTOR
  72.   INT 21H
  73.  
  74.   POP ES
  75.   POP SI
  76.   POP DI
  77.   POP DS
  78.   POP BP
  79.   RET
  80.  
  81. _DISABLE_BREAK ENDP
  82.  
  83.  
  84. ; *******************************************
  85.  
  86.   PUBLIC   _ENABLE_BREAK
  87.  
  88. _ENABLE_BREAK PROC NEAR
  89.  
  90.   PUSH BP
  91.   MOV  BP,SP
  92.  
  93.   PUSH DS
  94.   PUSH DI
  95.   PUSH SI
  96.   PUSH ES
  97.  
  98.   LDS DX,cs:ORG_INT23             ; RETRIEVE PREVIOUS INT23
  99.   MOV AX,2523H
  100.   INT 21H
  101.  
  102.   LDS DX,cs:ORG_INT1B             ; RETRIEVE PREVIOUS INTlB
  103.   MOV AX,251BH
  104.   INT 21H
  105.  
  106.   LDS DX,cs:ORG_INT05             ; RETRIEVE PREVIOUS INT05
  107.   MOV AX,2505H
  108.   INT 21H
  109.  
  110.   POP ES
  111.   POP SI
  112.   POP DI
  113.   POP DS
  114.   POP BP
  115.   RET
  116.  
  117. _ENABLE_BREAK ENDP
  118.  
  119.  
  120. ;*******************************************
  121.  
  122. NULL_BREAK PROC FAR
  123.  
  124.   IRET
  125.  
  126. NULL_BREAK ENDP
  127.  
  128.  
  129. ; *******************************************
  130.  
  131. ORG_INT23   dd   0
  132. ORG_INT1B   dd   0
  133. ORG_INT05   dd   0
  134.  
  135.  
  136. ; ******************************************
  137.  
  138. _TEXT   ENDS
  139.         END
  140.